/*************************************************************************
	> File Name: 002.求解范围内所有数字的最小素因子.c
	> Author: Maureen 
	> Mail: Maureen@qq.com 
	> Created Time: 一  8/23 17:04:12 2021
 ************************************************************************/

#include <stdio.h>

//求解10000以内的数字的最小素因子
#define MAX_N 10000

int prime[MAX_N + 5];

//素数的最小素因子就是其本身
//合数的最小素因子为第一次标记掉该数的数字
void solve() {
    for (int i = 2; i <= MAX_N; i++) {
        if (prime[i]) continue;
        for (int j = i; j <= MAX_N; j += i) { //用 i 标记的 j，所以最小素因子为i
            if (prime[j]) continue;
            prime[j] = i;
        }
    }
}

int main() {
    solve();
    for (int i = 2; i <= MAX_N; i++) {
        printf("min_factor(%d) = %d\n", i, prime[i]);
    }
    return 0;
}
